﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using eTMS.Controllers;
using eTMS.Controllers.KhoaHocService;
using eTMS.Controllers.KhoaService;
using eTMS.Controllers.NganhHocService;

namespace eTMS.Forms.Students
{
    public partial class FrmDanhMaSinhVien : eTMS.Controls.BaseForm
    {
        public FrmDanhMaSinhVien()
        {
            InitializeComponent();
        }

        private SinhVienController controller = new SinhVienController();

        private string _MaNamHoc = "";
        public string MaNamHoc
        {
            set
            {
                _MaNamHoc = value;
            }
        }
        

        private DataTable _dataTable;
        public void SetListSinhVien(List<DataRow> LsSinhVien)
        {
            if (LsSinhVien.Count > 0)
                _dataTable = LsSinhVien[0].Table.Clone();
            foreach (DataRow row in LsSinhVien)
            {
                _dataTable.ImportRow(row);
            }
            sinhVienList1.SetController(controller);
            controller.Table = _dataTable;
            sinhVienList1.UpdateToScreen();
        }

        private void GenMaSinhVien()
        {
            string[] names = new string[7];
            int[] pos = new int[7];
            int iSinhVien = 0;
            foreach (DataRow row in _dataTable.Rows)
            {

                names[0] = txtTienTo.Text.Trim();
                pos[0] = 0;
                if (cbkNganhHoc.Checked)
                {
                    names[1] = row["MaNganhHoc"].ToString();
                }
                else
                {
                    names[1] = "";
                }
                pos[1] = (int)txtNganh.Value;

                if (cbkKhoa.Checked)
                {
                    names[2] = row["MaKhoa"].ToString();
                }
                else
                {
                    names[2] = "";
                }
                pos[2] = (int)txtKhoa.Value;

                if (cbkKhoaHoc.Checked)
                {
                    names[3] = row["MaKhoaHoc"].ToString();
                }
                else
                {
                    names[3] = "";
                }
                pos[3] = (int)txtKhoaHoc.Value;

                if (cbkNamHoc.Checked)
                {
                    names[4] = _MaNamHoc;
                }
                else
                {
                    names[4] = "";
                }
                pos[4] = (int)txtNamHoc.Value;

                pos[5] = (int)txtViTri.Value;

                names[5] = "auto_number_\r\n";

                names[6] = txtHauTo.Text;
                pos[6] = 6;
                for (int i = 0; i < pos.Length - 1; i++)
                {
                    for (int j = i + 1; j < pos.Length; j++)
                    {
                        if (pos[i] > pos[j])
                        {
                            int itmp = pos[i];
                            pos[i] = pos[j];
                            pos[j] = itmp;
                            string stmp = names[i];
                            names[i] = names[j];
                            names[j] = stmp;
                        }
                    }
                }
                int posAuto = 0;
                for (int i = 0; i < pos.Length; i++)
                {
                    if (names[i] == "auto_number_\r\n")
                    {
                        posAuto = i;
                        break;
                    }
                }
                List<string> ls = new List<string>();
                int start = (int)txtBatDau.Value;
                int len = (int)txtDoDai.Value;

                string name = "";
                names[posAuto] = Commons.Common.FixLength(Convert.ToString(start + iSinhVien), len);
                for (int j = 0; j < names.Length; j++)
                {
                    if (names[j].Length > 0)
                    {
                        name = name + txtPhanCach.Text + names[j];
                    }
                }
                if (name.Length > 0)
                    name.Substring(txtPhanCach.Text.Length);
                row["MASINHVIEN"] = name;
                iSinhVien++;
            }
        }
        private void FrmAddNewRangeLop_Load(object sender, EventArgs e)
        {

        }

        private void ucCommandDialog1_OnOK(object sender, CancelEventArgs e)
        {
            if (IsTrungMa)
            {
                ShowWarning("Các mã sinh viên mới có mã đã tồn tại. Bạn hãy kiểm tra lại");
                return;
            }
            if(!Confirm("Bạn có thực sự muốn cập nhật mã cho các sinh viên"))
            {
                e.Cancel = true;
                return;
            }
            if(controller.UpdateMaSinhVien())
            {
                ShowInfo("Bạn đã cập nhật mã sinh viên thành công!");
            }
        }

        private bool IsTrungMa = false;
        private void CheckMaSinhVien()
        {
            IsTrungMa = controller.CheckExistsMaSinhVien();
            sinhVienList1.RedCheckColumn = "ExistsMa";
            sinhVienList1.RefreshList();
        }
        private void btnTaoMa_Click(object sender, EventArgs e)
        {
            GenMaSinhVien();
            CheckMaSinhVien();
        }
    }
}
